/***********************************************************************************
Copy right:	    Coffee Tech.
Author:         jiaoyue
Date:           2021-11-23
Description:    公共头文件
***********************************************************************************/

#ifndef EDGE_PUB_H
#define EDGE_PUB_H

enum NODE_TYPE
{
    NODE_TYPE_BOOL = 1,
    NODE_TYPE_INT,
    NODE_TYPE_FLOAT
};

union val_t
{ 
    int b_val;  //bool类型存储空间
    int i_val;   //整形值存储空间
    float f_val;  //浮点值存储空间
};

enum DEV_TYPE
{
    DEV_TYPE_M0 = 1,
    DEV_TYPE_MB
};

struct std_node
{
	int key;  //唯一键值
	int type;  //数据点类型
    int dev_type;  //属于哪个设备：1:m0  2:modbus
	union val_t old_val;  //变化上报后需要更新旧值
    union val_t new_val;  //从共享内存取出最新数据，放到new_val中
    int ret;  //默认为-1，采集成功后设置为0，采集失败再置-1
};

#define MAX_NODE 128  //最大支持的点数
#define STD_NODE_LEN sizeof(struct std_node)
#define MAX_NODE_SIZE (MAX_NODE * STD_NODE_LEN)

#define EDGE_SHM_NAME "edge_shm"

struct node_cache
{
    int *total;  //指向共享内存中数据节点总个数
    struct std_node *node_p; //指向共享内存中节点缓存数组头
};

#define DC_NAME "dc_service"
#define EC_NAME "ec_service"
#define DR_NAME "dr_service"

#define NODE_CONFIG_PAHT "/mnt/config/nv/node.json"

#endif  // EDGE_PUB_H
